#ifndef _BAZA_H
#define _BAZA_H

#include <vector>
#include <string>
#include <base64.h>

using namespace std;

struct SKapsel
{
	unsigned int id, ocena;
	string nazwapiwa, browar, kolor, smak, rodzajpiwa;
};


class CBazaDanych
{
private:
	vector<SKapsel> BazaKapsli;
	string nazwabazy;
public:
	CBazaDanych() { BazaKapsli.clear(); }
	CBazaDanych(string nazwa) { 
		BazaKapsli.clear(); 
		nazwabazy = nazwa;
	}
	void DodajKapsel(SKapsel NowyKapsel);
	inline void UsunKapsel(unsigned int id) { BazaKapsli.erase(BazaKapsli.begin()+id); }
	SKapsel WyswietlKapsel(int Numer) { return BazaKapsli[Numer]; }
	unsigned int ZwrocRozmiarBazy() { return BazaKapsli.size(); }
	string ZwrocNazweBazy() { return nazwabazy; }
	bool WczytajBaze(string nazwapliku);
	bool ZapiszBaze();
	void NowaBaza(string nazwa);
};

class CBazaBaz : public CBazaDanych
{
private:
	vector<string> ListaBaz;
public:
	CBazaBaz() { 
		ListaBaz.clear();
	}
	bool WczytajListe();
	void ZapiszListe();
	string ZwrocNazwe(unsigned int id) { return ListaBaz[id]; }
	unsigned int ZwrocRozmiar() { return ListaBaz.size(); }
	void DodajBaze(string nazwa) { 	
		nazwa = base64_encode(reinterpret_cast<const unsigned char*>(nazwa.c_str()), nazwa.length());
		ListaBaz.push_back(nazwa);
		ZapiszListe();
		NowaBaza(nazwa);
	}
};


#endif